package interfaz;

import java.util.Date;
import java.util.List;
import java.rmi.Remote;
import java.rmi.RemoteException;
import bean.*;

public interface InterfazNegocio extends Remote {

	
	// /////////////////////////////////////////////////////////////////////////////////
	// GESTION OFICINAS
	////////////////////////////////////////////////////////////////////////////////////
	
	
	// Clientes
	public ClienteVO obtenerCliente(ClienteVO c) throws RemoteException;
	public void guardarCliente(ClienteVO cVO) throws RemoteException;
	public void eliminarCliente(ClienteVO cVO) throws RemoteException;
	public void actualizarCliente(ClienteVO cVO) throws RemoteException;
	public List<ClienteVO> obtenerClientes(OficinaDeVentaVO o)
			throws RemoteException;

	// Facturas
	//public FacturaVO generarFactura(PedidoVO r) throws RemoteException;
	public FacturaVO obtenerFactura(FacturaVO f) throws RemoteException;

	// Venta
	public String solicitarVenta(String solicitudVentaXML)throws RemoteException;
	public String aceptarCotizacion(int nroCotizacion, boolean aceptado)throws RemoteException;
	//public RemitoVO solicitarVenta(PedidoVO pedido) throws RemoteException;

	
	
	
	// Cotizacion
	public String solicitarCotizacion(String solicitudCotizacionXML)throws RemoteException;;
	public CotizacionVO solicitarCotizacion2(String solicitudCotizacionXML)throws RemoteException;;
	//public CotizacionVO solicitarCotizacion(CotizacionVO cotizacion)throws RemoteException;

	// Comparativa
	/*public List<ItemListaPreciosVO> obtenerListaComparativa() throws RemoteException;*/
	public List<Object[]> obtenerComparativa(String codigo, String caract, String marca, String origen)throws RemoteException;
	public float obtenerMejorPrecio(int cant,Date fecha, String codigo, String caract, String marca, String origen)throws RemoteException;
	// Oficinas
	public List<OficinaDeVentaVO> obtenerListaOficinas() throws RemoteException;
	
	
	// /////////////////////////////////////////////////////////////////////////////////
	// GESTION CASA CENTRAL
	////////////////////////////////////////////////////////////////////////////////////
	
	// Oficinas
	public void guardarOficina(OficinaDeVentaVO o) throws RemoteException;
	public OficinaDeVentaVO obtenerOficina(OficinaDeVentaVO o) throws RemoteException;
	public void eliminarOficina(OficinaDeVentaVO o) throws RemoteException;

	// Condiciones de Pago
	public void guardarCondicionDePago(CondicionDePagoVO cp) throws RemoteException;
	public List<CondicionDePagoVO> obtenerListaCondicionesPago() throws RemoteException;
		
	// Proveedores
	public ProveedorVO obtenerProveedor(ProveedorVO p) throws RemoteException;
	public void guardarProveedor(ProveedorVO p) throws RemoteException;
	public void eliminarProveedor(ProveedorVO p) throws RemoteException;
	public void actualizarProveedor(ProveedorVO p) throws RemoteException;
	public List<ProveedorVO> obtenerProveedores() throws RemoteException;

	// Listas de Precios
	public void cargarListaDePrecios(String archivoXML) throws RemoteException;
	public ListaDePreciosVO obtenerListaDePrecios(ListaDePreciosVO l) throws RemoteException;	
	public void guardarListaDePrecios(ListaDePreciosVO l) throws RemoteException;
		
	// Rodamientos
	public RodamientoVO obtenerRodamiento(RodamientoVO r) throws RemoteException;
	public void guardarRodamiento(RodamientoVO r) throws RemoteException;
	public void actualizarRodamiento(RodamientoVO rodamientoVO) throws RemoteException;
	public List<RodamientoVO> obtenerRodamientos()throws RemoteException;
		
	//Estados
	public EstadoVO obtenerEstadoVO (EstadoVO e) throws RemoteException;
	public void guardarEstado(EstadoVO e) throws RemoteException;
	public List<EstadoVO> obtenerListaEstados() throws RemoteException;
	
	//Cotizaciones
	//public void cargarCotizacion(String archivoXML) throws RemoteException;
	public CotizacionVO obtenerCotizacion(CotizacionVO c) throws RemoteException;	
	public void guardarCotizacion(CotizacionVO c) throws RemoteException;
	
	//Pedidos
	public PedidoVO obtenerPedido(PedidoVO p) throws RemoteException;	
	public void guardarPedido(PedidoVO p) throws RemoteException;
	
	
	//Compra
	public RemitoVO guardarRemito(List<Integer> numeros, String cuit)throws RemoteException;
	//public RemitoVO generarCompra(PedidoVO pedido)throws RemoteException;
	// ///////////////////////////////////////////////////////////////////////////////////////

}
